<?php

# Функция для определения параметров изображения
# Возвращает массив параметров если файл изображение и FALSE при ошибке
function get_image_info($file = NULL) 
{
	if(!is_file($file)) {
		return false;
	}
	if(!$data = getimagesize($file) || !$filesize = filesize($file)) {
		return false;
	}
	$extensions = array(
		1 => 'gif',
		2 => 'jpg',
		3 => 'png',
		4 => 'swf',
		5 => 'psd',
		6 => 'bmp',
		7 => 'tiff',
		8 => 'tiff',
		9 => 'jpc',
		10 => 'jp2',
		11 => 'jpx',
		12 => 'jb2',
		13 => 'swc',
		14 => 'iff',
		15 => 'wbmp',
		16 => 'xbmp'
	);
	$result = array(
		'width'     => $data[0],
		'height'    => $data[1],
		'extension' => $extensions[$data[2]],
		'size'      => $filesize,
		'mime'      => $data['mime']
	);
	return $result;
}

function GetParam(&$arr, $name, $def = NULL) {
	$return = NULL;
	if (isset($arr[$name])) {
		return $arr[$name];
	}
	else {
		return $def;
	}
}

/* Нахождение формы в тексте, извлечение ее ID */
function getIdForm($text)
{			 
	$h1count = preg_match_all('/(<div class="form-site-replace id)(.*?)(">)/i', $text, $patterns);  
	return $patterns[2];  
}

// Функция обратного вызова для preg_replace_callback().
function hrefCallback($p) {
  // Преобразуем спецсимволы в HTML-представление.
  $name = htmlspecialchars($p[0]);
  // Если нет протокола, добавляем его в начало строки. 
  $href = !empty($p[1])? $name : "http://$name";
  // Формируем ссылку.
  return "<a href=\"$href\" target=\"_blank\">$name</a>";
}

// Заменяет ссылки на их HTML-эквиваленты ("подчеркивает ссылки").
function hrefActivate($text) {
  return preg_replace_callback(
	'{
	  (?:
		(\w+://)          # протокол с двумя слэшами
		|                 # - или -
		www\.             # просто начинается на www
	  )
	  [\w-]+(\.[\w-]+)*   # имя хоста
	  (?: : \d+)?         # порт (не обязателен)
	  [^<>"\'()\[\]\s]*   # URI (но БЕЗ кавычек и скобок)
	  (?:                 # последний символ должен быть...
		  (?<! [[:punct:]] )  # НЕ пунктуацией
		| (?<= [-/&+*]     )  # но допустимо окончание на -/&+*
	  )
	}xis',
	"hrefCallback",
	$text
  );
} 

/* Склонение */
function number_ending($number, $ending0, $ending1, $ending2) {
	$num100 = $number % 100;
	$num10 = $number % 10;
	if ($num100 >= 5 && $num100 <= 20) {
		return $ending0;
	} else if ($num10 == 0) {
		return $ending0;
	} else if ($num10 == 1) {
		return $ending1;
	} else if ($num10 >= 2 && $num10 <= 4) {
		return $ending2;
	} else if ($num10 >= 5 && $num10 <= 9) {
		return $ending0;
	} else {
		return $ending2;
	}
}

/* Удаление определенных тегов */
function strip_only($str, $tags) {
    if(!is_array($tags)) {
        $tags = (strpos($str, '>') !== false ? explode('>', str_replace('<', '', $tags)) : array($tags));
        if(end($tags) == '') array_pop($tags);
    }
    foreach($tags as $tag) $str = preg_replace('#</?'.$tag.'[^>]*>#is', '', $str);
    return $str;
}

/* Преобразуем Массив в JSON */
function getJSON($Array) {
	if(function_exists("json_encode")) {
		return json_encode($Array);
	}
	else {
		return to_json($Array);
	}
}

function to_json(array $data)
{
    $isArray = true;
    $keys = array_keys($data);
    $prevKey = -1;

    // Необходимо понять — перед нами список или ассоциативный массив.
    foreach ($keys as $key)
        if (!is_numeric($key) || $prevKey + 1 != $key)
        {
            $isArray = false;
            break;
        }
        else
            $prevKey++;

    unset($keys);
    $items = array();

    foreach ($data as $key => $value)
    {
        $item = (!$isArray ? "\"$key\":" : '');

        if (is_array($value))
            $item .= to_json($value);
        elseif (is_null($value))
            $item .= 'null';
        elseif (is_bool($value))
            $item .= $value ? 'true' : 'false';
        elseif (is_string($value))
            $item .= '"' . preg_replace(
                '%([\\x00-\\x1f\\x22\\x5c])%e',
                'sprintf("\\\\u%04X", ord("$1"))',
                $value
            ) . '"';
        elseif (is_numeric($value))
            $item .= $value;
        else
            throw new Exception('Wrong argument.');

        $items[] = $item;
    }

    return
        ($isArray ? '[' : '{') .
        implode(',', $items) .
        ($isArray ? ']' : '}');
}

/* размер файла */
function bytes2readable($v, $l = 0, $precision = 2) {
     $label = array(' Кб', ' Мб', ' Гб');
     $val = $v / 1024;
     if (floor($val) >= 1024) {
         $l++;
         $val = bytes2readable(floor($val), &$l);
     }
     return round($val, $precision).$label[$l];
}


function showCatTree($act, $parent, $lvl, $id, $pid){
	global $lvl, $var;
	
	$lvl++;	
	for($i=0;$i<$lvl;$i++){for($j=0;$j<$i;$j++) $mdash .= '&nbsp;';}	
	if($parent==0) $var .= '<option value="0"'.(($pid == 0)?' selected="selected" style="font-weight:bold;"':'').'>'.$mdash.' Корень каталога</option>';
	
	if(!empty($mdash)) $mdash .= '| &mdash;';	
	
	$r = mysql_query("select `id`, `name`, `parent` from `".$act."` where `parent` = '".intval($parent)."' order by `por`;");	
	while($p = mysql_fetch_assoc($r)){
		
		if($id == $p['id']) $_selected = ' disabled="disabled" style="font-weight:bold;"';
		elseif($pid == $p['id']) $_selected = ' selected="selected"';
		else $_selected = '';						
								 
		$var .= '<option value="'.$p['id'].'"'.$_selected.'>'.$mdash.' '.$p['name'].'</option>'."\n";
		
		showModTree($act,$p["id"],$lvl,$id,$pid);
		$lvl--;
	}	
	return $var;
}

function showModTree($table, $ParentID, $lvl, $id, $pid){
	global $lvl, $var;
	
	$lvl++;	
	for($i = 0; $i < $lvl; $i++){
		for($j = 0; $j < $i; $j++) {
			$mdash .= '&nbsp;';
		}
	}
	
	if(!empty($mdash)) {
		$mdash .= '| &mdash;';	
	}
	
	$r = mysql_query("SELECT `id`, `name`, `parent` FROM `".$table."` WHERE `parent` = '".$ParentID."' ORDER BY `por`;");	
	if (mysql_num_rows($r)){
		while ($p = mysql_fetch_assoc($r))
		{		
			if($id == $p['id']) {
				$_selected = ' disabled="disabled"';
			}
			elseif($pid == $p['id']) {
				$_selected = ' selected="selected"';
			}
			else {
				$_selected = '';
			}
						 
			$var .= '<option value="'.$p['id'].'"'.$_selected.'>'.$mdash.' '.$p['name'].'</option>'."\n";
			
			showModTree($table, $p["id"], $lvl, $id, $pid);
			$lvl--;
		}
	}	
	return $var;
}

function strtolower_Cyrillic($word) {
    $alfavitlover = explode(',', 'ё,й,ц,у,к,е,н,г,ш,щ,з,х,ъ,ф,ы,в,а,п,р,о,л,д,ж,э,я,ч,с,м,и,т,ь,б,ю,q,w,e,r,t,y,u,i,o,p,a,s,d,f,g,h,j,k,l,z,x,c,v,b,n,m');
    $alfavitupper = explode(',', 'Ё,Й,Ц,У,К,Е,Н,Г,Ш,Щ,З,Х,Ъ,Ф,Ы,В,А,П,Р,О,Л,Д,Ж,Э,Я,Ч,С,М,И,Т,Ь,Б,Ю,Q,W,E,R,T,Y,U,I,O,P,A,S,D,F,G,H,J,K,L,Z,X,C,V,B,N,M');
    for($wr=0;$wr<=count($alfavitlover);$wr++) {
        $word = str_replace($alfavitupper[$wr], $alfavitlover[$wr], $word);
    }
    return $word;
}

function utf8_substr($str,$from,$len){
    return preg_replace('#^(?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'. $from .'}'.'((?:[\x00-\x7F]|[\xC0-\xFF][\x80-\xBF]+){0,'. $len .'}).*#s','$1', $str);
}

function check_table($act){
	return mysql_query("SELECT `parent` FROM `".$act."` WHERE 0");
}

function getTreeParent($table,$id){
	$r = mysql_query("select `id` from `".$table."` where `parent`='".$id."' and `show`='1' order by `por`;") or mysql_error();
	if(mysql_num_rows($r)){
		while ($p = mysql_fetch_assoc($r)) $mass[] = $p['id'];
	}
	return $mass;
}

function __unserialize($string) {
    $unserialized = stripslashes($string);
    $unserialized = preg_replace('!s:(\d+):"(.*?)";!e', "'s:'.strlen('$2').':\"$2\";'", $unserialized );
    return unserialize($unserialized);
}

function getLevelOfGroup($table, $active_group = 0){
	$level = 0;
	$parent = $active_group;
	while(!$exit){
		$res = mysql_query("select `parent` from `".$table."` where `id`='".intval($parent)."' limit 1;");
		$parent = 0;
		if($result = mysql_fetch_assoc($res)){
			++$level;
			$parent = $result['parent'];
		}
		if(!$parent) $exit = true;
	}
	return $level;
}

function ParseEmail($m){
	list($n,$t) = explode("@",$m);
	$end = explode(".",$t);	
	for($i = 0;$i < (count($end) - 1); $i++){
		$s .= $end[$i].'.';	
	}	
	$end = array_reverse($end);	
	
	$v = "<script type=\"text/javascript\">mail_hide('".$n."','".$s."','".$end[0]."');</script>";
	return $v;
}

function WW_FolderCheck(){
	$path = ROOT_DIR.DIRSEP.UPLOADS_DIR.DIRSEP;
	if(!is_dir($path."files")){@mkdir($path."files");@chmod($path."files",0777);}	
	if(!is_dir($path."files/images")){@mkdir($path."files/images");@chmod($path."files/images",0777);}	
	if(!is_dir($path."files/files")){@mkdir($path."files/files");@chmod($path."files/files",0777);}
}

#####################################################
# 
# 26.07.2007 последняя модернизация. Исправлено усекание правой части, в случае вывода последних страниц... теперь всегда будет показывать заявленное количество страниц
# функция вывода постраничного разбиения
# webi.ru
# 
# $nachalo_ssilki это начало ссылки разбитой страницы( <a href="index.php?admin=prov_0 ) а дальше к этой ссылке будет прикрепляться уже переменная страницы...
# $kol_vidimyx_stranic количество страниц(1|2|3|4) видимых, а после этого количества пойдет >>>
# $kol_dannix это количество данных. Общее количество, которое нужно разбить на страницы
# $kol_dannix_na_stran количество данных на одну страницу
# $st активная в данный момент страница
# $name_st_var имя переменной, для номеров страниц
# $rewrite - определяет как будет формироваться ссылка, динамическая или статическая
# $end_stat концовка статической ссылки...
function g_webi_razbitye_stranicy($st,$nachalo_ssilki, $kol_vidimyx_stranic, $kol_dannix, $kol_dannix_na_stran,$name_st_var="st",$rewrite=0,$end_stat=""){
	$return=""; // переменная для сбора вывода
	if($kol_dannix > $kol_dannix_na_stran){
		$ostatok=$kol_dannix%$kol_dannix_na_stran;
		$kolichestvo_stranic=($kol_dannix-$ostatok)/$kol_dannix_na_stran;
		if ($ostatok>0):    # Если остаток был больше нуля, значит остается еще несколько объяв, для которых нужна еще одна страница
		$kolichestvo_stranic++;
		endif;
		if ($kolichestvo_stranic>$kol_vidimyx_stranic){ # если больше количества видимых страниц, начинаем прятать другие страницы в >>>
			$kol_stranic_s_leva=ceil($kol_vidimyx_stranic/2);
			if ($st>$kol_stranic_s_leva){  # (отсекание левой части)Если открыта страница выше пятой, то i примет другое значение, а если меньше пятой, то i будет 0
				$i=$st-$kol_stranic_s_leva;
				$menshe=$i;
			}
			else $i=0;

			# отсекание правой части
			if($i+$kol_vidimyx_stranic<$kolichestvo_stranic){
				$bolshe=$i+$kol_vidimyx_stranic+1;
				if($bolshe>$kolichestvo_stranic) $bolshe=$kolichestvo_stranic;
				$kolichestvo_stranic=$i+$kol_vidimyx_stranic;
			}
		}

		else $i=0;

		if($menshe<1):$menshe=1; endif;
		if($i>0){ # Если вывод с первой страницы 1 2 3 4... то <<< выводить не надо
			if($rewrite) $return.=$nachalo_ssilki."".$menshe.$end_stat."\">Предыдущая</a>  ";
			else $return.=$nachalo_ssilki."?".$name_st_var."=".$menshe."\">Предыдущая</a>  ";
		}

		// проверяем, если видимых страниц получается меньше, чем нужно(когда уже последние страницы выводятся), тогда $i делаем таким, чтобы получилось столько страниц, сколько нужно видимых...
		if(($kolichestvo_stranic-$i)<$kol_vidimyx_stranic){
			$i=$kolichestvo_stranic-$kol_vidimyx_stranic;
			if($i<0) $i=0; // если вдуг страниц на вывод мало, тогда i уйдет в минус, но минусов не надо..
		}

		while($i<$kolichestvo_stranic){
			$iii=$i+1;

			if($st==$iii) {# Это условие выводит либо ссылку, либо просто цифру(если данная ссылка активна)
				$return.=" <strong>$iii</strong>  ";
			}
			else{
				if($rewrite)  $return.=$nachalo_ssilki."".$iii.$end_stat."\">$iii</a>  ";
				else $return.=$nachalo_ssilki."?".$name_st_var."=".$iii."\">$iii</a>  ";
			}
			$i++;
		}
		if ($bolshe){
			if($rewrite) $return.=$nachalo_ssilki."".$bolshe.$end_stat."\">Следующая</a>";
			else $return.=$nachalo_ssilki."?".$name_st_var."=".$bolshe."\">Следующая</a>";
		}
		return $return;
	}
}
############################################################

function img_preview_ajax($table, $id_item, $name, $i, $class, $formatS, $formatB = false, $textToImg = false)
{
	$PathS = UPLOADS_DIR.'/'.$table.'/'.$id_item."_".$i.$formatS;
	$PathB = UPLOADS_DIR.'/'.$table.'/'.$id_item."_".$i.$formatB;

	if(file_exists(ROOT_DIR.'/'.$PathS))
	{		
		$SS = getimagesize(ROOT_DIR.'/'.$PathS);
		if(!$textToImg) {
			$img = '{*href*}<img alt="'.htmlspecialchars($name).'" '.$SS[3].(!empty($class)?' class="'.$class.'"':'').' src="/'.$PathS.'" />{*hrefe*}';
		}
		else {
			$img = '{*href*}'.$textToImg.'{*hrefe*}';
		}
			
		if (file_exists(ROOT_DIR.'/'.$PathB) && $formatB) 
		{
		  $SB = getimagesize(ROOT_DIR.'/'.$PathB);
		  $href = '<a href="/'.$PathB.'" title="'.htmlspecialchars($name).'" class="nyroModal" rel="gal">';
		  $href_end = '</a>';
		}
		
		$img = str_replace("{*href*}", $href, $img);
		$img = str_replace("{*hrefe*}", $href_end, $img);
		  
		$var = $img;		
	} 
	else
	{
		$var = '';
	}
	return $var;
}


function img_preview($var = array(), $flag = false)
{	
	$PathS = UPLOADS_DIR.'/'.$var['folder'].'/'.$var['id']."_".$var['num'].$var['small'];
	$PathB = UPLOADS_DIR.'/'.$var['folder'].'/'.$var['id']."_".$var['num'].$var['big'];
	
	switch($flag) {
		case "paths":
			if(file_exists(ROOT_DIR."/".$PathS)) {
				return $PathS;
			}
		break;
		
		case "pathb":
			if(file_exists(ROOT_DIR."/".$PathB)) {
				return $PathB;
			}
		break;
	}
	
	if(file_exists(ROOT_DIR.'/'.$PathS))
	{
		$SS = getimagesize(ROOT_DIR.'/'.$PathS);
		if(!$var['text']) {
			$img = '{href}<img alt="'.htmlspecialchars($var['name']).'" '.$SS[3].(!empty($var['class'])?' class="'.$var['class'].'"':'').' src="/'.$PathS.'" />{hrefe}';
		}
		else {
			$img = '{href}'.$var['text'].'{hrefe}';
		}
			
		if (file_exists(ROOT_DIR.'/'.$PathB) && $var['big'])
		{		   
		    $href     = '<a href="/'.$PathB.'" title="'.htmlspecialchars($var['name']).'" class="nyroModal" rel="gal">';
		    $href_end = '</a>';
		}
		elseif($var['link']) {
			$href     = '<a href="'.$var['link'].'" title="'.htmlspecialchars($var['name']).'">';
			$href_end = '</a>';
		}
		
		
		$img = str_replace("{href}", $href, $img);
		$img = str_replace("{hrefe}", $href_end, $img);
		  
		return $img;		
	}
	else {
		return false;
	}
}


function date_to_string($date,$pad){
	$month_name = array(
						1=>"Январь",
						2=>"Февраль",
						3=>"Март",
						4=>"Апрель",
						5=>"Май",
						6=>"Июнь",
						7=>"Июль",
						8=>"Август",
						9=>"Сентябрь",
						10=>"Октябрь",
						11=>"Ноябрь",
						12=>"Декабрь"						
					   );
	if ($pad != 3) list($year,$month,$day) = explode("-",$date);
	else $month=$date;
	
	if($day[0] == '0') $day = $day[1];
	if ($month[0] == '0') $month = $month[1];
	
	if ($pad == 1) $str = $day.' '.$month_name[$month].' '.$year;
	elseif ($pad == 2){
		if (($month == '1') || ($month == '2') || ($month == '3') || ($month == '6') || ($month == '7') || ($month == '9') || ($month == '10') || ($month == '11') || ($month == '12')) $month = str_replace("ь","я",$month_name[$month]);
		elseif ($month == '4')  $month = str_replace("ь","я",$month_name[$month]);
		elseif ($month == '5')  $month = str_replace("й","я",$month_name[$month]);
		elseif (($month == '3') || ($month == '8'))  $month = str_replace("т","та",$month_name[$month]);
		
		$str = $day.' '.$month.' '.$year;
	} elseif ($pad == 3) $str = $month_name[$month];
	
	return $str;
}


function date_timestamp_to_string($date,$sep){
	$monthsArray = array(
		1  => "января",
		2  => "февраля",
		3  => "марта",
		4  => "апреля",
		5  => "мая",
		6  => "июня",
		7  => "июля",
		8  => "августа",
		9  => "сентября",
		10 => "октября",
		11 => "ноября",
		12 => "декабря"						
	);
	$dateConvert = date("d",$date).$sep.$monthsArray[date("n",$date)].$sep.date("Y",$date);		
	return $dateConvert;
}











function castr_str ($text,$length){
	$temp_text = explode(" ",$text);

	for ($h=0;$h < count($temp_text);$h++){
		$temp2 = str_replace(" ","",$temp1_string);
		if((strlen($temp2)) < $length) $temp1_string .= ' '.$temp_text[$h];
	}
	
	if ((strlen($text) - strlen($temp1_string)) > 5) $text = $temp1_string.'...';
	else $text = $temp1_string;
	
	return($text);
}






function generate_id() {
if (empty($PHPSESSID)) {
$ssid = array('q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','1','2','3','4','5','6','7','8','9','0');
for ($t=1; $t<=32; $t++) {
$rand_symbol = rand(0,count($ssid));
$str .= $ssid[$rand_symbol];
}
}
return($str);
}

function generate_random(){
	$ssid = array('1','2','3','4','5','6','7','8','9','0');
	for ($t=1; $t<=4; $t++) {
		$rand_symbol = rand(0,count($ssid)-1);
		$str .= $ssid[$rand_symbol];
	}
	return($str);
}


function generate_random_password($length_pass) {
if (empty($length_pass)) $length_pass = 5;
if (empty($PHPSESSID)) {
$ssid = array('q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m','Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M','1','2','3','4','5','6','7','8','9','0');
for ($t=1; $t<=$length_pass; $t++) {
$rand_symbol = rand(0,count($ssid));
$str .= $ssid[$rand_symbol];
}
}
return($str);
}





	/* Если id есть то системное имя не будет проверятся для этой записи, а по другим только */
	function get_free_num($text,$table,$num,$id=false){
		if($id) $zapr = " and `id`!='".$id."' ";
		else $zapr = '';
		
		$r = mysql_query("SELECT `sys_name` FROM `".$table."` WHERE `sys_name`='".($text.'_'.$num)."' ".$zapr." LIMIT 1;") or die(mysql_error());
		if(mysql_num_rows($r)){
			$num++;
			$text = get_free_num($text,$table,$num);
		} else $text = $text.'_'.$num;
		
		return $text;
	}	
	
	function translite($text, $table=false, $id=false){	

		static $tbl = array(
			'а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'e', 'ж'=>'g', 'з'=>'z',
			'и'=>'i', 'й'=>'y', 'к'=>'k', 'л'=>'l', 'м'=>'m', 'н'=>'n', 'о'=>'o', 'п'=>'p',
			'р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u', 'ф'=>'f', 'ы'=>'i', 'э'=>'e', 'А'=>'A',
			'Б'=>'B', 'В'=>'V', 'Г'=>'G', 'Д'=>'D', 'Е'=>'E', 'Ж'=>'G', 'З'=>'Z', 'И'=>'I',
			'Й'=>'Y', 'К'=>'K', 'Л'=>'L', 'М'=>'M', 'Н'=>'N', 'О'=>'O', 'П'=>'P', 'Р'=>'R',
			'С'=>'S', 'Т'=>'T', 'У'=>'U', 'Ф'=>'F', 'Ы'=>'I', 'Э'=>'E', 'ё'=>"yo", 'х'=>"h",
			'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ъ'=>"", 'ь'=>"", 'ю'=>"yu", 'я'=>"ya",
			'Ё'=>"YO", 'Х'=>"H", 'Ц'=>"TS", 'Ч'=>"CH", 'Ш'=>"SH", 'Щ'=>"SHCH", 'Ъ'=>"", 'Ь'=>"",
			'Ю'=>"YU", 'Я'=>"YA"
		);
		
		$text = preg_replace('~[^а-яА-Яa-zA-Z0-9_]+~u', '_', $text);
		$text = castr_str($text,30);
		$text = strtr($text, $tbl);
		$text = strtolower($text);		
		$text = preg_replace('~[^-a-z0-9_]+~u', '_', $text);
		$text = trim($text,"_");
		
		if ($table){
			if($id) $zapr = " and `id`!='".$id."' ";
			else $zapr='';			

			$r =& Registry::get("MDB")->query("SELECT `id` FROM `".$table."` WHERE `sys_name`='".$text."' ".$zapr." LIMIT 1;");		
			if (PEAR::isError($r)) {
				die($r->getMessage().' ::: '.$r->getUserInfo());
			}
			
			if ($r->numRows()) {
				$text = get_free_num($text,$table,1,$id);
			}
		}
		
		return $text;
	}

	
	
	
	
	
	
	
	
	
	

	function str_to_lower($text) {
		$matrix = array (
		'.' => '.',
		'Й' => 'й',
		'Ц' => 'ц',
		'У' => 'у',
		'К' => 'к',
		'Е' => 'е',
		'Н' => 'н',
		'Г' => 'г',
		'Ш' => 'ш',
		'Щ' => 'щ',
		'З' => 'з',
		'Х' => 'х',
		'Ъ' => 'ъ',
		'Ф' => 'ф',
		'Ы' => 'ы',
		'В' => 'в',
		'А' => 'а',
		'П' => 'п',
		'Р' => 'р',
		'О' => 'о',
		'Л' => 'л',
		'Д' => 'д',
		'Ж' => 'ж',
		'Э' => 'э',
		'Я' => 'я',
		'Ч' => 'ч',
		'С' => 'с',
		'М' => 'м',
		'И' => 'и',
		'Т' => 'т',
		'Ь' => 'ь',
		'Б' => 'б',
		'Ю' => 'ю',
		'Q' => 'q',
		'W' => 'w',
		'E' => 'e',
		'R' => 'r',
		'T' => 't',
		'Y' => 'y',
		'U' => 'u',
		'I' => 'i',
		'O' => 'o',
		'P' => 'p',
		'A' => 'a',
		'S' => 's',
		'D' => 'd',
		'F' => 'f',
		'G' => 'g',
		'H' => 'h',
		'J' => 'j',
		'K' => 'k',
		'L' => 'l',
		'Z' => 'z',
		'X' => 'x',
		'C' => 'c',
		'V' => 'v',
		'B' => 'b',
		'N' => 'n',
		'M' => 'm',
		);
		$ret_text = '';
		for ($i=0; $i<strlen($text); $i++){
			$key = $text[$i];
			if (!empty($matrix[$key])) $ret_text .= $matrix[$key];
			else $ret_text .= $text[$i];
		}
		return($ret_text);
	}

	function fun_tit($x,$name='') {
	 if ($x == '') $x = title_cat_fun($name);
	 $x = mysql_escape_string($x);
	 return ($x);
	}
	
	function fun_des($x,$stext='',$btext='',$name='') {
	 if ($stext != '') {$txt = $stext;} 
	 elseif ($btext != '') {$txt = $btext;} 
	 else {$txt = $name;}
	 if ($x == '') {$x = description_fun($txt);}
	 $x = mysql_escape_string($x); 
	 return ($x);
	}
	


	function title_cat_fun($title_cat) {
	 $title_cat = strip_tags($title_cat);
	 $title_cat = stripcslashes($title_cat); 
	 $title_cat = str_replace("\""," ", $title_cat);
	 $title_cat = str_replace("\\"," ", $title_cat); 
	 $title_cat = trim($title_cat);
	 $title_cat = substr($title_cat, 0, 255);
	 $title_cat = ereg_replace(chr(10)," ", $title_cat); //Заменили переводы строк
	 $title_cat = str_replace("nbsp"," ", $title_cat);
	 $title_cat = str_replace("&"," ", $title_cat);  
	 $title_cat = str_replace("'"," ", $title_cat);   
	 $title_cat = preg_replace("~\s+~", " ", $title_cat); // все пробелы и табуляции
	 return $title_cat;
	}
	
	function description_fun($description) {
	 $description = strip_tags($description);
	 $description = stripcslashes($description); 
	 $description = str_replace("\""," ", $description);
	 $description = str_replace("\\"," ", $description); 
	 $description = trim($description);
	 $description = substr($description, 0, 255);
	 $description = ereg_replace(chr(10)," ", $description); //Заменили переводы строк
	 $description = str_replace("nbsp"," ", $description);
	 $description = str_replace("&"," ", $description); 
	 $description = str_replace("'"," ", $description);  
	 $description = preg_replace("~\s+~", " ", $description); // все пробелы и табуляции
	 return $description;
	}
	
	function fun_key($string){
	  $stopWords = array('i','a','about','an','and','are','as','at','be','by','com','de','en','for','from','how','in','is','it','la','of','on','or','that','the','this','to','was','what','when','where','who','will','with','und','the','www');
   
      $string = str_replace(array("\n","\r","\t"), "", strip_tags( $string ));
	  $string = preg_replace('/  +/', ' ', $string);
	  $string = preg_replace('/ss+/i', '', $string);	 
	  $string = trim($string); // trim the string	  
	  $string = preg_replace('/[^a-zA-Z0-9 -]/', '', $string); // only take alphanumerical characters, but keep the spaces and dashes too…
	  $string = strtolower($string); // make it lowercase
   
	  preg_match_all('/\b.*?\b/i', $string, $matchWords);
	  $matchWords = $matchWords[0];
	  
	  foreach ( $matchWords as $key=>$item ) {
		  if ( $item == '' || in_array(strtolower($item), $stopWords) || strlen($item) <= 3 ) {
			  unset($matchWords[$key]);
		  }
	  }   
	  $wordCountArr = array();
	  if ( is_array($matchWords) ) {
		  foreach ( $matchWords as $key => $val ) {
			  $val = strtolower($val);
			  if(!empty($val)) {			  
				  if ( isset($wordCountArr[$val]) ) {
					  $wordCountArr[$val]++;
				  } else {
					  $wordCountArr[$val] = 1;
				  }
			  }
		  }
	  }
	  arsort($wordCountArr);
	  $wordCountArr = array_slice($wordCountArr, 0, 10); 
	  return implode(',', array_keys($wordCountArr));
	}
	
?>